import UserUpdate from '../models/userUpdate.model.js';


/**
 * 用户更新控制器
 * 处理用户更新记录相关的HTTP请求
 */
const UserUpdateController = {
  /**
   * 获取所有用户更新记录
   */
  getAllUserUpdates: async (req, res) => {
    try {
      const userUpdates = await UserUpdate.getAll();
      res.status(200).json(userUpdates);
    } catch (error) {
      console.error('获取用户更新记录失败:', error);
      res.status(500).json({ error: '获取用户更新记录失败' });
    }
  },

  /**
   * 根据ID获取用户更新记录
   */
  getUserUpdateById: async (req, res) => {
    try {
      const { id } = req.params;
      const userUpdate = await UserUpdate.getById(id);
      if (!userUpdate) {
        return res.status(404).json({ error: '用户更新记录不存在' });
      }
      res.status(200).json(userUpdate);
    } catch (error) {
      console.error('获取用户更新记录失败:', error);
      res.status(500).json({ error: '获取用户更新记录失败' });
    }
  },

  /**
   * 根据用户ID获取用户更新记录
   */
  getUserUpdatesByUserId: async (req, res) => {
    try {
      const { userId } = req.params;
      const userUpdates = await UserUpdate.getByUserId(userId);
      res.status(200).json(userUpdates);
    } catch (error) {
      console.error('获取用户更新记录失败:', error);
      res.status(500).json({ error: '获取用户更新记录失败' });
    }
  },

  /**
   * 根据组件版本ID获取用户更新记录
   */
  getUserUpdatesByComponentVersionId: async (req, res) => {
    try {
      const { componentVersionId } = req.params;
      const userUpdates = await UserUpdate.getByComponentVersionId(componentVersionId);
      res.status(200).json(userUpdates);
    } catch (error) {
      console.error('获取用户更新记录失败:', error);
      res.status(500).json({ error: '获取用户更新记录失败' });
    }
  },

  /**
   * 记录用户更新
   */
  recordUserUpdate: async (req, res) => {
    try {
      const { userId, componentVersionId, updateTime, status } = req.body;
      
      if (!userId || !componentVersionId || !updateTime) {
        return res.status(400).json({ error: '缺少必要的参数' });
      }
      
      const userUpdateId = await UserUpdate.recordUpdate({
        userId,
        componentVersionId,
        updateTime,
        status
      });
      
      res.status(201).json({
        id: userUpdateId,
        message: '用户更新记录创建成功'
      });
    } catch (error) {
      console.error('记录用户更新失败:', error);
      res.status(500).json({ error: '记录用户更新失败' });
    }
  },

  /**
   * 删除用户更新记录
   */
  deleteUserUpdate: async (req, res) => {
    try {
      const { id } = req.params;
      const result = await UserUpdate.delete(id);
      if (!result) {
        return res.status(404).json({ error: '用户更新记录不存在' });
      }
      res.status(200).json({ message: '用户更新记录删除成功' });
    } catch (error) {
      console.error('删除用户更新记录失败:', error);
      res.status(500).json({ error: '删除用户更新记录失败' });
    }
  },

  /**
   * 根据用户ID和组件版本ID删除用户更新记录
   */
  deleteUserUpdateByUserIdAndComponentVersionId: async (req, res) => {
    try {
      const { userId, componentVersionId } = req.params;
      const result = await UserUpdate.deleteByUserIdAndComponentVersionId(userId, componentVersionId);
      if (!result) {
        return res.status(404).json({ error: '用户更新记录不存在' });
      }
      res.status(200).json({ message: '用户更新记录删除成功' });
    } catch (error) {
      console.error('删除用户更新记录失败:', error);
      res.status(500).json({ error: '删除用户更新记录失败' });
    }
  }
};

export default UserUpdateController;
